package com.dragon.modules.yuegou.enums.code;

import com.dragon.common.constant.enums.IBusinessCode;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 直播错误信息
 * 
 * @author ZSH
 *
 */
public enum LiveCode implements IBusinessCode {

	/**
	 * 传入直播时间错误
	 */
	INCORRECT_LIVE_TIME(40001, "开播时间需要在当前时间的30分钟后，时间间隔不得短于30分钟，不得超过12小时"),

	/**
	 * 直播错误
	 */
	LIVE_ERROR(40002, "%s"),
	
	/**
	 * 入参格式不符合规范
	 */
	PARANETER_FORMAT_NOT(47001, "入参格式不符合规范"),
	
	/**
	 * 入参错误
	 */
	PARANETER_ERROR(200002, "入参错误"),
	
	/**
	 * 直播错误
	 */
	PROHIBIT_CREATION(300001, "禁止创建/更新商品 或 禁止编辑&更新房间"),
	
	/**
	 * 直播错误
	 */
	NAME_LENGTH_ERROR(300002, "名称长度不符合规则"),
	
	/**
	 * 直播错误
	 */
	IMAGE_UPLOAD_FAILED(300006, "图片上传失败（如：mediaID过期）"),
	
	/**
	 * 直播错误
	 */
	ROOM_NOT_EXIST(300022, "此房间号不存在"),
	
	/**
	 * 直播错误
	 */
	ROOM_STATUS_INTERCEPTION(300023, "房间状态 拦截（当前房间状态不允许此操作）"),
	
	/**
	 * 直播错误
	 */
	PRODECT_DOES_NOT_EXIST(300024, "商品不存在"),
	
	/**
	 * 直播错误
	 */
	PRODECT_ERROR(300025, "商品审核未通过"),
	
	/**
	 * 直播错误
	 */
	ROOM_IS_FULL(300026, "房间商品数量已经满额"),
	
	/**
	 * 直播错误
	 */
	IMPOET_PRODUCTS(300027, "导入商品失败"),
	
	/**
	 * 直播错误
	 */
	ROOM_NAME_VIOLATION(300028, "房间名称违规"),
	
	/**
	 * 直播错误
	 */
	ANCHOR_NICKNAME_VIOLATION(300029, "主播昵称违规"),
	
	/**
	 * 直播错误
	 */
	ANCHOR_WECHAT_IS_ILLEGAL(300030, "主播微信号不合法"),
	
	/**
	 * 直播错误
	 */
	COVER_IMAGE_NOT_COMPLIANT(300031, "直播间封面图不合规"),
	
	/**
	 * 直播错误
	 */
	SHARING_IMGE_VIOLATION(300032, "直播间分享图违规"),
	
	/**
	 * 直播错误
	 */
	ADD_LIVE_PRODUCT_EXCEEDS(300033, "添加商品超过直播间上限"),
	
	/**
	 * 直播错误
	 */
	WEHAT_NICKNAME_NOT_MEET(300034, "主播微信昵称长度不符合要求"),
	
	/**
	 * 直播错误
	 */
	ANCHOR_WECHAT_NOT_EXIST(300035, "主播微信号不存在"),
	
	/**
	 * 直播错误
	 */
	ANCHOR_WECHAT_CERTIFIED(300036, "主播微信号未实名认证"),


	LIVE_ERROR_MSG(49999, "%s"),

	NOT_RESPONSE(30037,"该房间没有数据"),

	/**
	 * 状态码说明
	 */
	TODO(40000, "直播错误信息");
	
	private final Integer code;

	private final String message;

	private LiveCode(Integer code, String message) {
		this.code = code;
		this.message = message;
	}

	public Integer getCode() {
		return code;
	}

	public String getMessage() {
		return message;
	}

	/**
	 * 把code转化为ResponseCode枚举
	 * 
	 * @param code 代码
	 * @return
	 */
	public static LiveCode from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * Code Map for ResponseCode
	 */
	private static final Map<Integer, LiveCode> CODE_MAP = Stream.of(LiveCode.values())
			.collect(Collectors.toMap(LiveCode::getCode, e -> e));
	
}
